package ru.neoflex.jedit.plugin.domain.autocomplete;

import ru.neoflex.jedit.plugin.utils.XhtmlUtils;
import ru.neoflex.jedit.plugin.utils.Assert;
import ru.neoflex.jedit.plugin.domain.autocomplete.XhtmlAutocompleteSettings.Tag;
import org.apache.commons.lang3.StringUtils;

/**
 * Класс генерирует WhisdomBar подсказку для XHTML
 */
public class XhtmlAutocompleteHelper {

    /**
     * Генерация подсказки для WhisdomBarа
     * @param settings перечень xhtml тэгов
     * @param text текст
     * @param position положение каретки
     * @return текст подсказки
     */
    public static String generateHint(XhtmlAutocompleteSettings settings, String text, int position) {
        Assert.notNull(settings);
        Assert.notNull(text);

        String tagName = XhtmlUtils.getTagName(text, position);
        Tag tag = settings.getTagByName(tagName);
        if (tag == null) {
            return null;
        } else {
            StringBuilder sb = new StringBuilder();
            sb.append("Тэг: " + tagName + "\n");
            if (tag.getMandatoryAttributes().size() > 0) {
                sb.append("Обязательные аттрибуты: " + StringUtils.join(tag.getMandatoryAttributes(), ", ") + ".\n");
            }
            if (tag.getNotMandatoryAttributes().size() > 0) {
                sb.append("Необязательные аттрибуты: " + StringUtils.join(tag.getNotMandatoryAttributes(), ", ") + ".\n");
            }

            return sb.toString();
        }
    }
}
